<% if (props.language === "typescript") { %>
  import { system, filesystem } from 'gluegun'
<% } else { %>
  const { system, filesystem } = require('gluegun')
<% } %>

const src = filesystem.path(__dirname, '..')

const cli = async cmd => system.run('node ' + filesystem.path(src, 'bin', '<%= props.name %>') + ` ${cmd}`)

test('outputs version', async () => {
  const output = await cli('--version')
  expect(output).toContain('0.0.1')
})

test('outputs help', async () => {
  const output = await cli('--help')
  expect(output).toContain('0.0.1')
})

test('generates file', async () => {
  const output = await cli('generate foo')
  <% if (props.language === "typescript") { %>
    expect(output).toContain('Generated file at models/foo-model.ts')
    const foomodel = filesystem.read('models/foo-model.ts')
  <% } else { %>
    expect(output).toContain('Generated file at models/foo-model.js')
    const foomodel = filesystem.read('models/foo-model.js')
  <% } %>

  expect(foomodel).toContain(`module.exports = {`)
  expect(foomodel).toContain(`name: 'foo'`)

  // cleanup artifact
  filesystem.remove('models')
})
